Reference
  Area\Util.txt
  Util\Audio.txt
  Util\Party.txt
  Util\CommonDialog.txt
End Reference

Procedure Main(startAt)

  Dim ac = Nothing

  RegisterCommonEventHandlers()
  
  SetZoneOfTown(64, 64, 1, 1, 62, 62, ExitArea_Enter)

  ac = AddActor_MTStopped("GuardMan1", 30, 35, 0, [A_Soldier], ActorMotion.Up, GuardMan1_Contact)
  
  ac = AddActor_MTStopped("GuardMan2", 31, 35, 0, [A_Soldier], ActorMotion.Up, GuardMan2_Contact)
  
  ac = AddActor_MTStopped("GuardMan3", 32, 35, 0, [A_Soldier], ActorMotion.Up, GuardMan3_Contact)
  
  ac = AddActor_MTStopped("GuardMan4", 33, 35, 0, [A_Soldier], ActorMotion.Up, GuardMan4_Contact)
  
  ac = AddActor_MTZonedRandom("Worker1", 10, 27, 0, _
    8, 22, 0, 13, 32, 0, [A_Soldier], Worker1_Contact)
  
  ac = AddActor_MTZonedRandom("Worker2", 52, 27, 0, _
    50, 22, 0, 55, 32, 0, [A_Soldier], Worker2_Contact)
  
  ac = AddActor_MTZonedRandom("Worker3", 31, 13, 0, _
    28, 8, 0, 35, 18, 0, [A_Soldier], Worker3_Contact)
  
  ac = AddActor_MTZonedRandom("Worker4", 31, 27, 0, _
    25, 25, 0, 38, 30, 0, [A_Soldier], Worker4_Contact)

  DoInsideWarp(startAt, SetEntrance(31, 62, 0, Direction.Up), False)
  
  ChangeBGM(Music.Castle)
  PutAreaNameLabel()

  NotifyEntered()
  Idle(ProcessInput)
  NotifyExiting()

End Procedure

Procedure GuardMan1_Contact()
  DoMsg("国王陛下は大変ご多忙である")
End Procedure

Procedure GuardMan2_Contact()
  DoMsg("この先は玉座の間である")
End Procedure

Procedure GuardMan3_Contact()
  DoMsg("陛下がお前などに　御用のあろうはずがない")
End Procedure

Procedure GuardMan4_Contact()
  DoMsg("帰れ")
End Procedure

Procedure ExitArea_Enter()
  BeginOutsideWarp([Field], GetAreaObject().Tag)
End Procedure

Procedure Worker1_Contact()
  DoMsg("サマオリアは大陸の南東部を領土にしている", _
    "北に行けばエンケラとメノームの町が", _
    "南に行けばブンジェの村があるぞ")
End Procedure

Procedure Worker2_Contact()
  DoMsg("隣国アドルニアとは山脈で隔てられている", _
    "もし向こうに行きたいのなら　西海岸の近くの", _
    "切通しを通るしかないな")
End Procedure

Procedure Worker3_Contact()
  Dim p_name = [TheHero].Name + "："
  Dim q_name = "兵士："
  If TestFlag("Ibye_2") Then
    DoMsg(q_name, "ルビーが無事見つかってよかった", _
      "ありがとう")
  ElseIf TakeOurTool([RoyalRuby]) Then
    DoMsg(q_name, "おお！　これぞ正しく王家のルビー！", _
      "なに　洞窟の奥に落ちていたと……", _
      "なるほど　愚かな盗人もいるものだ")
    Sleep(500)
    DoMsg(q_name, "まあとにかくありがとう　それで", _
      "発見者には" + MoneyStr(10000) + "出すという", _
      "話になっているから　受け取ってくれ")
    DoMsg(p_name, "では遠慮なく頂戴します")
    ReceiveMoney(10000)
    SetFlag("Ibye_2")
  ElseIf TestFlag("Ibye_1") Then
    DoMsg(q_name, "情報があったら教えてくれ")
  Else
    DoMsg(q_name, "お前　旅の者だな？")
    DoMsg(p_name, "そうですが")
    DoMsg(q_name, "どこかでルビーの話を聞かなかったか")
    DoMsg(p_name, "え？　いや　ちょっと分かりません")
    DoMsg(q_name, "実は　先日この城に盗人が入ってな", _
      "金と一緒に王家のルビーが盗まれてしまったのだ")
    Sleep(500)
    DoMsg(q_name, "金はどうでもいいがルビーが問題だ", _
      "この世に二つとない　王家の宝だからな", _
      "もし情報が手に入ったら教えてくれ")
    Sleep(500)
    DoMsg(q_name, "というわけなのだ", _
      "もしどこかで話を聞いたら教えてくれ")
    SetFlag("Ibye_1")
  End If
End Procedure

Procedure Worker4_Contact()
  DoMsg("南のブンジェの近くに古い塔があり", _
    "朱雀の塔と呼ばれているのだが", _
    "どうも最近　不穏な気配がする")
End Procedure
